﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FrameworkLib.Filters;
using LinqKit;
using GestionePolveri2.DAL;
using System.Data.Objects;

namespace GestionePolveriLib.BL.FilterBags
{
    public class AnagraficaPOSFilterBag : FilterBase<POSTable>, IFilterBase
    {
        public string Turno { get; set; }
        public string Impianto { get; set; }
        public string Operatore { get; set; }
        public Guid IDOperatore { get; set; }

        public AnagraficaPOSFilterBag()
        {
            InitializeFilter();
        }

        public void InitializeFilter()
        {

        }

        public override System.Linq.Expressions.Expression<Func<POSTable, bool>> SetUpFilter()
        {
            var predicate = PredicateBuilder.True<POSTable>();

            if (this.UseDates)
            {
                // aggiungi al filtro il controllo sulla data...
                predicate = predicate.And(im => (EntityFunctions.TruncateTime(im.DatePOS) >= EntityFunctions.TruncateTime(this.PeriodFrom)) &&
                                                 EntityFunctions.TruncateTime(im.DatePOS) <= EntityFunctions.TruncateTime(this.PeriodTo));
            }

            if (!string.IsNullOrWhiteSpace(Turno))
            {
                predicate = predicate.And(im => im.Turni.Descrizione == Turno);
            }

            if (!string.IsNullOrWhiteSpace(Impianto))
            {
                predicate = predicate.And(im => im.Impianti.Impianto == Impianto);
            }

            //if (!string.IsNullOrWhiteSpace(Operatore))
            //{
            //    predicate = predicate.And(im => im. == Impianto);
            //}

            return predicate;
        }
    }
}
